package br.com.serctam.session;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Begin;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.framework.EntityQuery;
import org.jboss.seam.persistence.HibernateSessionProxy;

import br.com.serctam.entity.Cargo;
import br.com.serctam.entity.Concurso;
import br.com.serctam.entity.Localidade;

@Name("localidadeList")
public class LocalidadeList extends EntityQuery<Localidade>
{

	@In(create=true)
	private CargoList cargoList;

	
	@In
	private HibernateSessionProxy hibernateSession;
	
	@Out(scope=ScopeType.CONVERSATION)
	private List<Localidade> localidades;
	
	public Concurso concurso;
	public Cargo cargo;
	
	@Begin(join=true)
	public void buscar(){
		
		Criteria crt =  hibernateSession.createCriteria(Localidade.class);
		
		if ( cargoList.getConcurso() != null) {
			crt.createCriteria("cargo").add(Restrictions.eq("concurso", cargoList.getConcurso()));
		}
		
		if ( cargo != null) {
			crt.add(Restrictions.eq("cargo", cargo));
			
		}
		
		
		localidades = crt.list();
		
    }
	
	@Begin(join=true)
	public void buscar(Cargo cargo){

		Criteria crt =  hibernateSession.createCriteria(Localidade.class);
		
		if ( cargo != null) {
			crt.add(Restrictions.eq("cargo", cargo));
		}
		
		
		localidades = crt.list();
		
	}
	
	


	
    public LocalidadeList()
    {
        setEjbql("select localidade from Localidade localidade");
        localidades = new ArrayList<Localidade>(0);
    }




	public List<Localidade> getLocalidades() {
		return localidades;
	}




	public void setLocalidades(List<Localidade> localidades) {
		this.localidades = localidades;
	}




	public Concurso getConcurso() {
		return concurso;
	}




	public void setConcurso(Concurso concurso) {
		this.concurso = concurso;
	}




	public Cargo getCargo() {
		return cargo;
	}




	public void setCargo(Cargo cargo) {
		this.cargo = cargo;
	}
}
